The MPEG-1 and MPEG-2 Layer III (MP3) formats (ISO/IEC 11172-3 and ISO/IEC 13818-3) are used extensively for representing compressed audio information. Compression reduces the bit rate of the audio information: the number of bits needed to represent a time interval of the audio information. In general, the MP3 format supports various reduction rates, depending on the required bit rate.
The MP3 audio information is transported in a data stream that contains headers at specific intervals. Each header is associated with a frame describing a predetermined number of samples of audio data in compressed form. The header indicates information about the data in the frame, such as the sample frequency of the data in the frame and the bit rate.
The interval between successive headers is a predetermined function of information in the header. MP3 compatible decoders are enabled to find each header using the header-distance determined from the preceding header.
However, the actual number of bits needed to represent a frame can deviate from the space available in the interval between the headers. This is because with MP3 the amount of information that is needed to encode audio information can vary from frame to frame.
To cope with these deviations MP3 allows frames to start at a variable offset relative to the headers. Thus, space left over between headers by preceding frames can be used for data of the subsequent frame. MP3 provides for a pointer associated with each header. The pointer indicates the start of data of the frame associated with the header relative to the position of the header. As a result a frame of data can start at a variable position preceding the associated header in space left over by a preceding frame. Exceptionally, the pointer can be zero, so that the data starts immediately after the frame. Thus, the position of the start of the data relative to the position of the header depends on the audio content encoded by the data stream.
To decode these frames MP3 decoders store as a minimum a predetermined amount of data preceding the header (512 bytes, excluding headers and side information of previous frames) in a buffer memory to allow the decoder to access the frame data once the pointer has been received.
It has been found that the presence of frame data outside the area between the corresponding frame header and the subsequent header impedes efficient implementation of functions like trick play (fast forward play etc.) and/or editing in MP3. For a fast forward function for example, one would like to skip frames so that only data from between selected pairs of headers is stored. However, this is insufficient for decoding because the pointers of the selected headers might point back to data that has not been stored. Similarly, to insert data during editing, one cannot simply start from an arbitrary header without having to load data preceding that header.
As a result, relatively complicated decoders are needed to support trick play and/or editing. In the extreme, it may be necessary to decompress the data perform these functions and compress the data again, which is very inefficient in terms of complexity and quality.